import request from '@/utils/request'

/**
 * 获取活动列表
 * @param {Object} params 查询参数
 * @returns {Promise} 活动列表
 */
export function getActivities(params) {
  return request({
    url: '/activities',
    method: 'get',
    params
  })
}

/**
 * 获取活动详情
 * @param {number} id 活动ID
 * @returns {Promise} 活动详情
 */
export function getActivityById(id) {
  return request({
    url: `/activities/${id}`,
    method: 'get'
  })
}

/**
 * 搜索活动
 * @param {string} keyword 关键词
 * @param {Object} params 查询参数
 * @returns {Promise} 活动列表
 */
export function searchActivities(keyword, params) {
  return request({
    url: '/activities/search',
    method: 'get',
    params: { ...params, keyword }
  })
}

/**
 * 创建活动（仅管理员可用）
 * @param {Object} data 活动数据
 * @returns {Promise} 创建结果
 */
export function createActivity(data) {
  return request({
    url: '/activities',
    method: 'post',
    data
  })
}

/**
 * 更新活动（仅管理员可用）
 * @param {number} id 活动ID
 * @param {Object} data 更新数据
 * @returns {Promise} 更新结果
 */
export function updateActivity(id, data) {
  return request({
    url: `/activities/${id}`,
    method: 'put',
    data
  })
}

/**
 * 取消活动（仅管理员可用）
 * @param {number} id 活动ID
 * @returns {Promise} 取消结果
 */
export function cancelActivity(id) {
  return request({
    url: `/activities/${id}/cancel`,
    method: 'post'
  })
}

/**
 * 删除活动（仅管理员可用）
 * @param {number} id 活动ID
 * @returns {Promise} 删除结果
 */
export function deleteActivity(id) {
  return request({
    url: `/activities/${id}`,
    method: 'delete'
  })
}

/**
 * 报名活动
 * @param {number} id 活动ID
 * @returns {Promise} 报名结果
 */
export function registerForActivity(id) {
  return request({
    url: `/activities/${id}/register`,
    method: 'post'
  })
}

/**
 * 取消报名
 * @param {number} id 活动ID
 * @returns {Promise} 取消结果
 */
export function cancelRegistration(id) {
  return request({
    url: `/activities/${id}/register`,
    method: 'delete'
  })
}

/**
 * 提交活动评价
 * @param {number} id 活动ID
 * @param {string} feedback 评价内容
 * @param {number} rating 评分（1-5）
 * @returns {Promise} 提交结果
 */
export function submitFeedback(id, feedback, rating) {
  return request({
    url: `/activities/${id}/feedback`,
    method: 'post',
    params: { feedback, rating }
  })
}

/**
 * 获取活动评价列表
 * @param {number} id 活动ID
 * @returns {Promise} 评价列表
 */
export function getActivityFeedbacks(id) {
  return request({
    url: `/activities/${id}/feedbacks`,
    method: 'get'
  })
}

/**
 * 获取我的活动报名列表
 * @returns {Promise} 报名列表
 */
export function getMyRegistrations() {
  return request({
    url: '/activities/my-registrations',
    method: 'get'
  })
}

/**
 * 获取所有活动（管理员用）
 * @param {Object} params 查询参数
 * @returns {Promise} 活动列表
 */
export function getAllActivities(params) {
  return request({
    url: '/admin/activities',
    method: 'get',
    params
  })
}

/**
 * 获取活动报名记录（管理员用）
 * @param {number} id 活动ID
 * @param {Object} params 查询参数
 * @returns {Promise} 报名记录
 */
export function getActivityRegistrations(id, params) {
  return request({
    url: `/admin/activities/${id}/registrations`,
    method: 'get',
    params
  })
}

/**
 * 标记用户是否参加活动（管理员用）
 * @param {number} registrationId 报名记录ID
 * @param {boolean} attended 是否参加
 * @returns {Promise} 更新结果
 */
export function markAttendance(registrationId, attended) {
  return request({
    url: `/admin/activities/registrations/${registrationId}/attendance`,
    method: 'put',
    params: { attended }
  })
} 